package com.shanjupay.transaction.api;

import com.shanjupay.common.domain.BusinessException;
import com.shanjupay.transaction.api.dto.PayChannelDTO;
import com.shanjupay.transaction.api.dto.PayChannelParamDTO;
import com.shanjupay.transaction.api.dto.PlatformChannelDTO;

import java.util.List;

/**
 * TODO
 *
 * @Description 支付渠道服务 管理支付渠道 配置
 * @Author zhangbing
 * @Date 2024/5/20 15:33
 **/
public interface PayChannelService {
    //获取平台服务类型
    List<PlatformChannelDTO> queryPlatformChannel()throws BusinessException;
    /**
     * 为app绑定平台服务类型
     * @param appId 应用id
     * @param platformChannelCodes 平台服务类型列表
     */

    void bindPlatformChannelForApp(String appId,String platformChannelCodes) throws BusinessException;

    /**
     * 查看应用是否放到服务类型
     * @param appId
     * @param platformChannel
     * @return 绑定 1 否则 0
     * @throws BusinessException
     */
    int queryAppBindPlatformChannel(String appId,String platformChannel) throws BusinessException;

    //查询支付渠道 列表
    List<PayChannelDTO> queryPayChannelByPlatFormChannel(String platformChannelCode) throws BusinessException;

    //保存支付渠道参数
    void savePayChannelParam(PayChannelParamDTO payChannelParamDTO);
    /**
     * 根据应用和服务类型查询支付渠道参数列表
     * @param appId 应用id
     * @param platformChannel 服务类型code
     * @return
     */
    List<PayChannelParamDTO> queryPayChannelParambyAppIdPlatformChannel(String appId,String platformChannel);

    /**
     * 根据应用、服务类型和支付渠道的代码查询该支付渠道的参数配置信息
     * @param appId 应用id
     * @param platformChannel 服务类型code
     * @param payChannel  支付渠道代码
     * @return
     */
    PayChannelParamDTO queryParamByAppIdPlatformChannelAndpayChannel(String appId,String platformChannel,String payChannel);
}
